﻿
Imports KUeLib.Data
Imports KUeLib.Data.ServiceDefinitions
Imports KUeLib.Buchungen.Positionen
Imports ExHandlerLib
Imports System.Windows.Forms
Imports System.Drawing

Namespace Formulare.Buchungen.Controls

    Public Class PositionControl

        Private _positionenDataService As BuchungspositionenDataService = _
                    ServiceManager.GetInstance().GetBuchungspositionenDataService()
        Private _kategoienService As KategorienDataService = _
                    ServiceManager.GetInstance().GetKategorienDataService()


        Private _position As Buchungsposition
        Private _errorManager As ErrorProviderManager

        Public Sub New(ByVal position As Buchungsposition)

            ' Dieser Aufruf ist für den Designer erforderlich.
            InitializeComponent()

            ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

            'CoorpDesignLib.ControlFormater.GetInstance().RegisterControls(Me.Controls)

            _errorManager = New ErrorProviderManager

            _position = position

            Dim kategorien As List(Of KUeLib.Kategorien.Kategorie) = _
                _kategoienService.GetAlleKategorien()

            kategorien.Sort(New KUeLib.Kategorien.KategorieComparer())

            cbKategorie.DataSource = kategorien
            cbKategorie.DisplayMember = "DisplayText"
            cbKategorie.ValueMember = "Id"

            BindContents()
        End Sub

        Private Sub BindContents()

            tbBetrag.DataBindings.Add("Text", _position, "Betrag")
            _errorManager.RegisterControl(tbBetrag, "Text")
            AddHandler tbBetrag.DataBindings("Text").Format, AddressOf CoorpDesignLib.ControlFormater.FormatCurrencyEventHandler

            tbBezeichnung.DataBindings.Add("Text", _position, "Bezeichnung")
            _errorManager.RegisterControl(tbBezeichnung, "Text")

            tbDatum.DataBindings.Add("Value", _position, "Datum")
            _errorManager.RegisterControl(tbDatum, "Value")

            cbKategorie.DataBindings.Add("SelectedValue", _position, "KategorieId")
            _errorManager.RegisterControl(cbKategorie, "SelectedValue")

        End Sub

        Public Sub Save()
            _position.Id = _positionenDataService.Save(_position)
        End Sub

        Public Sub Delete()
            If MessageBox.Show(String.Format("Soll die Position '{0}' wirklich gelöscht werden?", _
                                             _position.Bezeichnung), "Sicherheitsabfrage", _
                                    MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
                _positionenDataService.DeletePosition(_position)
                Me.Dispose()
            End If
        End Sub

        'Private Sub PositionControl_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.GotFocus
        '    Me.BackColor = Color.SteelBlue
        'End Sub

        'Private Sub PositionControl_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LostFocus
        '    Me.ResetBackColor()
        'End Sub
    End Class

End Namespace